import { IPSAppDataEntity } from './dataentity/ipsapp-data-entity';
import { IPSAppUILogic } from './logic/ipsapp-uilogic';
import { IPSModelObject } from '../ipsmodel-object';

/**
 *
 * @export
 * @interface IPSApplicationLogic
 */
export interface IPSApplicationLogic extends IPSModelObject {
  /**
   * 事件参数
   * @type {string}
   */
  eventArg: string;

  /**
   * 事件参数2
   * @type {string}
   */
  eventArg2: string;

  /**
   * 事件名称
   * @type {string}
   */
  eventNames: string;

  /**
   * 逻辑标记
   * @type {string}
   */
  logicTag: string;

  /**
   * 触发逻辑类型
   * @type {string}
   */
  logicType: string;

  /**
   * 逻辑名称
   * @type {string}
   */
  name: string;

  /**
   * 触发逻辑所在应用实体
   *
   * @type {IPSAppDataEntity}
   */
  getPSAppDataEntity(): IPSAppDataEntity | null;

  /**
   * 触发应用预置界面逻辑
   *
   * @type {IPSAppUILogic}
   */
  getPSAppUILogic(): IPSAppUILogic | null;

  /**
   * 脚本代码
   * @type {string}
   */
  scriptCode: string;

  /**
   * 定时间隔（ms）
   * @type {number}
   * @default 0
   */
  timer: number;

  /**
   * 触发器类型
   * @description 值模式 [界面逻辑触发类型] {TIMER：定时器触发、 CTRLEVENT：部件事件触发、 VIEWEVENT：视图事件触发、 APPEVENT：应用事件触发、 ITEMVISIBLE：项显示逻辑、 ITEMENABLE：项启用逻辑、 ITEMBLANK：项空输入逻辑、 ITEMDYNACLASS：项动态样式表、 RENDER：绘制器、 ATTRIBUTE：注入属性、 CUSTOM：自定义、 VUE_DIRECTIVE：VUE指令 }
   * @type {( string | 'TIMER' | 'CTRLEVENT' | 'VIEWEVENT' | 'APPEVENT' | 'ITEMVISIBLE' | 'ITEMENABLE' | 'ITEMBLANK' | 'ITEMDYNACLASS' | 'RENDER' | 'ATTRIBUTE' | 'CUSTOM' | 'VUE_DIRECTIVE')}
   * @default APPEVENT
   */
  triggerType:
    | string
    | 'TIMER'
    | 'CTRLEVENT'
    | 'VIEWEVENT'
    | 'APPEVENT'
    | 'ITEMVISIBLE'
    | 'ITEMENABLE'
    | 'ITEMBLANK'
    | 'ITEMDYNACLASS'
    | 'RENDER'
    | 'ATTRIBUTE'
    | 'CUSTOM'
    | 'VUE_DIRECTIVE';
}
